﻿using System;
using System.Text;

namespace Lesson24_StringBuilder
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 回顾
            //string是特殊的引用类型
            //每次被修改都会重新分配空间
            #endregion

            #region StringBuilder
            //C#提供的用于处理字符串的公共类 
            //可以修改字符串而不创建新的对象
            //主要用于：
            //需要频繁修改的字符串
            //使用时需要引用命名空间 System.Text
            #endregion

            #region 初始化
            StringBuilder sb = new StringBuilder("LiberTy");
            Console.WriteLine(sb);
            //StringBuilder sb = new StringBuilder("LiberTy", 100);     //后面的数字表示最大容量
            //StringBuilder sb = new StringBuilder(100);                //数字表示容量
            #endregion

            #region 容量与长度
            //StringBuilder存在容量的概念 若修改后的字符串长度大于容量 则会自动扩容
            StringBuilder sb2 = new StringBuilder();
            Console.WriteLine(sb2.Capacity);
            StringBuilder sb3 = new StringBuilder("abcdefghijklmnopqrstuvwxyz");
            Console.WriteLine(sb3.Capacity);
            //获取实际字符串长度
            StringBuilder sb4 = new StringBuilder("hahaha", 100);
            Console.WriteLine(sb4.Capacity);
            Console.WriteLine(sb4.Length);
            #endregion

            #region 增删查改、替换
            //增
            sb.Append(" hzy");
            Console.WriteLine(sb);
                //在字符串最后添加一个换行符
            sb.AppendLine();
                //使用插值字符串进行添加
            sb.AppendFormat("{0}{1}", 1, 2);
            Console.WriteLine(sb);
                //选择新增内容插入的位置
            sb4.Insert(2, "hehe");
            Console.WriteLine(sb4);
            //删
            sb4.Remove(2, 2);       //第一个参数为删除操作开始位置 第二个参数为删除字符个数
            Console.WriteLine(sb4);
            //直接清空
            //sb4.Clear();
            //Console.WriteLine(sb4);
            //查
                //使用索引器(★★★★string的索引器不能这样操作 因为它是只读的)
            Console.WriteLine(sb4[0]);
            //改
            sb4[0] = 'H';
            Console.WriteLine(sb4[0]);
            //替换
            sb4.Replace("h", "H");
            Console.WriteLine(sb4);
            #endregion
        }
    }
}